﻿Option Explicit On
Option Strict On
Imports System.Data.OleDb

Public Class FormConsultas

    Dim Torneos As Torneo
    Dim Jugadores As Jugador
    Dim Equipos As Equipo
    Dim Usuarios As Usuario
    Dim MiDB As BaseDatos

    Private Sub FormConsultas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        MiDB = New BaseDatos()
        Me.Icon = My.Resources.icono_campeonato
        Dim TipoDatos() As String = {"Torneo", "Jugador", "Equipo", "Usuario"}
        cbx_TipoDatos.Items.AddRange(TipoDatos)

    End Sub

    Private Sub btn_Busqueda_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Busqueda.Click

        dgv_Consultas.Rows.Clear()

        If cbx_TipoDatos.SelectedItem Is "Torneo" Then

            Torneos = New Torneo()

            Dim Consulta As OleDbDataReader
            Consulta = Torneos.ConsultarBD("*")

            While Consulta.Read
                Me.dgv_Consultas.Rows.Add(Consulta(1), Consulta(2), Consulta(3),
                                          Consulta(4), Consulta(5), Consulta(6),
                                          Consulta(7), Consulta(8))
            End While

        ElseIf cbx_TipoDatos.SelectedItem Is "Jugador" Then

            Jugadores = New Jugador()

            Dim Consulta As OleDbDataReader
            Consulta = Jugadores.ConsultarBD("*")

            While Consulta.Read
                Me.dgv_Consultas.Rows.Add(Consulta(1), Consulta(2), Consulta(3),
                                          Consulta(4), Consulta(5), Consulta(6),
                                          Consulta(7), Consulta(8), Consulta(9))
            End While

        ElseIf cbx_TipoDatos.SelectedItem Is "Equipo" Then

            Equipos = New Equipo()

            Dim consulta As OleDbDataReader
            consulta = MiDB.Leer("SELECT Jugador.Nombre, Jugador.Apellido," & _
                                 " Equipo.Nombre, Equipo.Entrenador, " & _
                                 "Equipo.Capitan, Equipo.Contacto FROM" & _
                                 " Jugador RIGHT JOIN (Equipo RIGHT JOIN " & _
                                 "JugadorEquipo ON (Equipo.Nombre = " & _
                                 " JugadorEquipo.Nombre_Equipo) AND " & _
                                 "(Equipo.Id_Equipo = JugadorEquipo.Id_Equipo))" & _
                                 " ON (Jugador.Nombre = JugadorEquipo.Nombre_Jugador)" & _
                                 " AND (Jugador.Id_Jugador = JugadorEquipo.Id_Jugador);")

            While consulta.Read
                Me.dgv_Consultas.Rows.Add(consulta(0), consulta(1), consulta(2),
                                          consulta(3), consulta(4), consulta(5))
            End While


        ElseIf cbx_TipoDatos.SelectedItem Is "Usuario" Then

            Usuarios = New Usuario()

            Dim consulta As OleDbDataReader
            consulta = MiDB.Leer("SELECT Usuario.Nombre, Usuario.Rol, " & _
                                 "Permisos.* FROM Permisos RIGHT JOIN Usuario " & _
                                 "ON Permisos.Id_Permisos = Usuario.Id_Permisos")

            While consulta.Read
                Me.dgv_Consultas.Rows.Add(consulta(0), consulta(1), consulta(3),
                                          consulta(4), consulta(5), consulta(6),
                                          consulta(7))
            End While
        Else
            MsgBox("Seleccione un tipo de dato.")
        End If

    End Sub

    Private Sub cbx_TipoDatos_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbx_TipoDatos.SelectedIndexChanged

        If cbx_TipoDatos.SelectedItem Is "Torneo" Then

            'Borramos todas las columnas de nuestro control DataGridView.
            Me.dgv_Consultas.Columns.Clear()
            'Definimos un array con los nombres de cada una de las columnas.
            Dim Nombres() As String = {"Lugar", "Fecha inicio", "Fecha finalización",
                                       "Torneo", "Mixto", "Liga", "Equipo1", "Equipo2"}
            CrearColumnas(Nombres)

            If Me.MdiChildren.Length > 0 Then
                Me.ActiveMdiChild.Close()
            End If

            FormModificarTorneo.Show()

        ElseIf cbx_TipoDatos.SelectedItem Is "Jugador" Then

            Me.dgv_Consultas.Columns.Clear()
            Dim Nombres() As String = {"Nombre", "Apellido", "Direccion",
                                       "Telefono", "Email", "WhatsApp",
                                       "FaceBook", "Twitter", "Observaciones"}
            CrearColumnas(Nombres)

            If Me.MdiChildren.Length > 0 Then
                Me.ActiveMdiChild.Close()
            End If

            FormModificarJugador.Show()

        ElseIf cbx_TipoDatos.SelectedItem Is "Equipo" Then

            Me.dgv_Consultas.Columns.Clear()
            Dim Nombres() As String = {"Jugador", "Apellido",
                                       "Equipo", "Entrenador",
                                       "Capitan", "Contacto"}
            CrearColumnas(Nombres)

            If Me.MdiChildren.Length > 0 Then
                Me.ActiveMdiChild.Close()
            End If

            FormModificarEquipo.Show()

        ElseIf cbx_TipoDatos.SelectedItem Is "Usuario" Then

            Me.dgv_Consultas.Columns.Clear()
            Dim Nombres() As String = {"Usuario", "Rol", "Archivo",
                                       "Campeonato", "Gestion",
                                       "Configuracion", "Ayuda"}
            CrearColumnas(Nombres)

            If Me.MdiChildren.Length > 0 Then
                Me.ActiveMdiChild.Close()
            End If

            FormModificarUsuario.Show()

        End If

    End Sub

    'Métodos
    Private Sub CrearColumnas(ByVal Nombres() As String)

        For i As Integer = 0 To Nombres.Length - 1 Step 1
            'Creamos una nueva columna y le asignamos un nombre.
            Dim NuevaColumna As New DataGridViewTextBoxColumn
            NuevaColumna.Name = Nombres(i)

            'Añadimos la nueva columna a nuestro DataGridView.
            Me.dgv_Consultas.Columns.Add(NuevaColumna)
        Next

    End Sub

    Private Sub dgv_Consultas_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv_Consultas.CellClick

        If cbx_TipoDatos.SelectedItem Is "Jugador" Then

            If Not IsDBNull(Me.dgv_Consultas.Rows(e.RowIndex).Cells(0).Value()) Then
                FormModificarJugador.tb_Nombre.Text = CStr(Me.dgv_Consultas.Rows(e.RowIndex).Cells(0).Value())
            Else
                FormModificarJugador.tb_Nombre.Text = ""
            End If

            If Not IsDBNull(Me.dgv_Consultas.Rows(e.RowIndex).Cells(1).Value()) Then
                FormModificarJugador.tb_Apellido.Text = CStr(Me.dgv_Consultas.Rows(e.RowIndex).Cells(1).Value())
            Else
                FormModificarJugador.tb_Apellido.Text = ""
            End If

            If Not IsDBNull(Me.dgv_Consultas.Rows(e.RowIndex).Cells(2).Value()) Then
                FormModificarJugador.tb_Direccion.Text = CStr(Me.dgv_Consultas.Rows(e.RowIndex).Cells(2).Value())
            Else
                FormModificarJugador.tb_Direccion.Text = ""
            End If

            If Not IsDBNull(Me.dgv_Consultas.Rows(e.RowIndex).Cells(3).Value()) Then
                FormModificarJugador.mtb_Telefono.Text = CStr(Me.dgv_Consultas.Rows(e.RowIndex).Cells(3).Value())
            Else
                FormModificarJugador.mtb_Telefono.Text = ""
            End If

            If Not IsDBNull(Me.dgv_Consultas.Rows(e.RowIndex).Cells(4).Value()) Then
                FormModificarJugador.tb_Email.Text = CStr(Me.dgv_Consultas.Rows(e.RowIndex).Cells(4).Value())
            Else
                FormModificarJugador.tb_Email.Text = ""
            End If

            If Not IsDBNull(Me.dgv_Consultas.Rows(e.RowIndex).Cells(5).Value()) Then
                FormModificarJugador.cb_Whatsapp.Checked = CBool(Me.dgv_Consultas.Rows(e.RowIndex).Cells(5).Value())
            End If

            If Not IsDBNull(Me.dgv_Consultas.Rows(e.RowIndex).Cells(6).Value()) Then
                FormModificarJugador.tb_Facebook.Text = CStr(Me.dgv_Consultas.Rows(e.RowIndex).Cells(6).Value())
            Else
                FormModificarJugador.tb_Facebook.Text = ""
            End If

            If Not IsDBNull(Me.dgv_Consultas.Rows(e.RowIndex).Cells(7).Value()) Then
                FormModificarJugador.tb_Twitter.Text = CStr(Me.dgv_Consultas.Rows(e.RowIndex).Cells(7).Value())
            Else
                FormModificarJugador.tb_Twitter.Text = ""
            End If

            If Not IsDBNull(Me.dgv_Consultas.Rows(e.RowIndex).Cells(8).Value()) Then
                FormModificarJugador.tb_Observaciones.Text = CStr(Me.dgv_Consultas.Rows(e.RowIndex).Cells(8).Value())
            Else
                FormModificarJugador.tb_Observaciones.Text = ""
            End If

        End If

    End Sub
End Class